package ar.pmt.gwt.client.common.view;

import ar.pmt.gwt.client.common.store.CommonStore;
import ar.pmt.gwt.client.recurso.store.AltaModificacionRecursoStore;

import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Widget;
import com.gwtext.client.core.Position;
import com.gwtext.client.data.Reader;
import com.gwtext.client.widgets.Button;
import com.gwtext.client.widgets.Component;
import com.gwtext.client.widgets.Panel;
import com.gwtext.client.widgets.form.FieldSet;
import com.gwtext.client.widgets.form.FormPanel;
import com.gwtext.client.widgets.form.TextField;
import com.gwtext.client.widgets.layout.ColumnLayout;
import com.gwtext.client.widgets.layout.ColumnLayoutData;
import com.gwtext.client.widgets.layout.FormLayout;
import com.gwtext.client.widgets.layout.VerticalLayout;


public class SimpleForm extends Composite 
 {
	private Panel panelRoot = new Panel();
	private FormPanel formPanel = new FormPanel();
	private Panel panel = new Panel();
	private  Panel[] columnasPanel = null;
	private Panel[] filasPanel = null;
	private FieldSet[] filedSets = null;
	private int cantFila = 0;
	private int cantColumnas = 0;
  
	/**
	 * Crea un Simple Formulario segun la distribucion matriz de Paneles
	 * @param titulo de pantalla
	 * @param titulosSubGrupos titulos de los subgrupos de componentes
	 * @param composicion Matriz de Panel que da la composicion y layout al formulario
	 * @param ancho Ancho del formulario
	 * @param mapeo Readers de como campos se mapea con la informacion 
	 * @param botones Botones de submit o load en posicion footer.
	 */
	public SimpleForm(String titulo, String[] titulosSubGrupos, Panel[][] composicion, int ancho , Reader mapeo, Button[] botones) {
		cantFila = titulosSubGrupos.length;
		cantColumnas = composicion[0].length;
		
		double anchoColumna = 1/new Double(cantColumnas);
		
		panelRoot.setBorder(false);
		panelRoot.setPaddings(1);
		panelRoot.setLayout(new VerticalLayout());
		panelRoot.setId("root");
		
		formPanel.setFrame(true);
		formPanel.setTitle(titulo);
		formPanel.setReader(mapeo);
		formPanel.setLabelAlign(Position.RIGHT);
		

		panel.setId("panel");
		panel.setLayout(new VerticalLayout());
		panel.setAutoWidth(true);
		
		filasPanel = new Panel[cantFila];
		columnasPanel = new Panel[cantColumnas*cantFila];
		filedSets= new FieldSet[cantFila];
		for (int i = 0; i < cantFila; i++) {
			filasPanel[i] = new Panel();
			filasPanel[i].setLayout(new ColumnLayout());
			for (int j = 0; j < (cantColumnas); j++) {
				composicion[i][j].setLayout(new FormLayout());
				filasPanel[i].add(composicion[i][j], new ColumnLayoutData(anchoColumna));
			}
			filedSets[i] = new FieldSet(titulosSubGrupos[i]);
			filedSets[i].setCollapsible(true);
			filedSets[i].setAutoHeight(true);
			filedSets[i].setWidth(ancho);
			filedSets[i].add(filasPanel[i]);
			
		
			panel.add(filedSets[i]);			
		}
		formPanel.add(panel);
		
		TextField estadoPmt = new TextField("Estado", "estadopmt", 200);
		estadoPmt.setFieldMsgTarget("under");
		formPanel.add(estadoPmt);
		formPanel.setWidth(ancho);
		
		
		formPanel.setAutoHeight(true);
		
		
		
		
		
		panelRoot.add(formPanel);
		panelRoot.setAutoWidth(true);
		
		for (int i = 0; i < botones.length; i++) {
			formPanel.addButton(botones[i]);			
		}
		//formPanel.setErrorReader(CommonStore.getErrorReader());
	
		initWidget(formPanel);
		
	
	}
	
	public void addForm(Widget widget){
		formPanel.add(widget);
	}
	
	public FormPanel getFormPanel(){
		return formPanel;
	}
	
	public void setWidth(int ancho){
		for (int i = 0; i < filedSets.length; i++) {
			filedSets[i].setWidth(ancho);
		}
	}
	
	
	public void addComponent(Component component, int row, int col){
		int rowAux = row -1;
		int colAux = col -1;
		if(rowAux>=0 && colAux>=0){
			
			
			//columnasPanel[(rowAux*cantColumnas)+colAux].add(component);
			//panel.add(new TextField("Nombre", "nombre", 200));
		}
		
	}
	
	

	

}

